package day05;
/*
    数组的初始化：
        就是位数组中的数组元素分配内存空间，并为每个数组元素赋值

    数组的初始化方式
        动态初始化：初始化时只指定数组长度，由系统为数组分配初始值。
            标准格式：
                数据类型[] 数组名 = new 数据类型[];
            例如：
                int[] arr = new int[10];

        静态初始化：初始化时指定每个数组元素的初始值，由系统决定数组长度。
            标准格式：
                数据类型[] 数组名 = new 数据类型[];
            例如：
                int[] arr = new int[]{元素1,元素2,...};
            简化格式：
                数据类型[] 数组名 = {元素1,元素2,...};
            例如：
                int[] arr = {1,2,3};

        区别其实就是：你有没有亲自给与赋值处理，赋值了就是静态初始化。
                     反之，没有就是动态初始化。
        这里还要注意的是：不能动态和静态混用！！！经常也会犯下这种错误！
                     错误示范：
                        int[] arr = new int[3]{1,2,3};
 */
public class ArrayDemo1 {
    public static void main(String[] args) {

//        //单独的（这样不是初始化，既没有给长度，也没有给值），
//        //但没有使用它，不会报错
//        int[] a;
//        //这里作为输出，使用了数组，会报错 Error:(19, 28) java: 可能尚未初始化变量a
//        System.out.println(a);

        //动态初始化
        int[] arr = new int[3];
        System.out.println(arr);//[I@1540e19d 地址值(这里的地址值不是固定的，根据系统环境和内存的不同决定的)
        System.out.println(arr[0]);//0
        System.out.println(arr[1]);//0
        System.out.println(arr[2]);//0

        System.out.println("--------");

        //静态初始化
        //标准格式下
        int[] arr1 = new int[]{1,2,3};
        System.out.println(arr1);//[I@677327b6
        System.out.println(arr1[0]);//1
        System.out.println(arr1[1]);//2
        System.out.println(arr1[2]);//3

        //简化格式下(推荐使用)
        int[] arr2 = {4,5,6};
        System.out.println(arr2);//[I@14ae5a5
        System.out.println(arr2[0]);//4
        System.out.println(arr2[1]);//5
        System.out.println(arr2[2]);//6

        //静态初始化和静态初始化不能混用！
        //一下为错误示范
        //int[] arr3 = new int[3]{1,2,3};//Error:(64, 32) java: 需要';'
                                       //Error:(64, 34) java: 需要';'
                                       //Error:(64, 33) java: 不是语句
        //可见：Java也不允许混用初始化格式


    }
}
